//
//  HBBaseTableViewController.swift
//  sinaWeibo
//
//  Created by Beans on 16/6/23.
//  Copyright © 2016年 iceWorks. All rights reserved.
//

import UIKit
import SVProgressHUD

class HBBaseTableViewController: UITableViewController {

    // 企业开发中, 会有很多界面传值. 可以定义在基类中
    var params: AnyObject?

    // 定义一个标志位
//    var isLogin: Bool = false
    var isLogin: Bool = HBOauthViewModel.shareInstance.isLogin

    // 控制器的生命周期 loadView 方法 (创建一个视图)
    // 1. 若不调用super.loadView(), 视图是黑的, 且是一个死循环
    // 2. 不调用super, 但当一个视图填充整个控制器, 可指定一个view
    let visitorView = HBVisitorView()   // 放外边, 以便其它vc调用
    override func loadView() {
        if isLogin {
            super.loadView()
            
        } else {
            // 显示访客视图
            visitorView.startAnimation()

            // 代理第四步 设置代理
            // 注意: 设置完代理会报错, 去实现协议方法即可
            visitorView.delegate = self

            view = visitorView

            setupNav()
        }
    }

    override func viewDidLoad() {
        super.viewDidLoad()

    }

    // 设置导航栏
    private func setupNav() {
        navigationItem.leftBarButtonItem = UIBarButtonItem(title: "注册", style: UIBarButtonItemStyle.Plain, target: self, action: "didRegister")
        navigationItem.rightBarButtonItem = UIBarButtonItem(title: "登录", style: UIBarButtonItemStyle.Plain, target: self, action: "didLogin")
    }
}

// 此处用于隔离代码
// swift遵守协议采用 :协议
extension HBBaseTableViewController: HBVisitorViewDelegate {

    func didRegister() {
        printLog("register item/btn click")

        let oauth = HBOauthViewController()
        let nav = UINavigationController(rootViewController: oauth)
        presentViewController(nav, animated: true) { () -> Void in
        }
        
    }

    func didLogin() {
        printLog("login item/btn click")
    }
}

// MARK: - 视图加载的方法
extension HBBaseTableViewController {

    func showLoadingView() {
        SVProgressHUD.show()
    }

    func hiddenLoadingView() {
//        SVProgressHUD.dismiss()
        hiddenLoadingView("")
    }

    func hiddenLoadingView(message: String) {
        SVProgressHUD.showErrorWithStatus(message)
    }
}